package com.njts.array;

/**
 * @author David GE
 * Date  2025/11/13
数据排序操作:随处可见 "运算"->数据的处理 搜索
搜索算法:1 二分搜索:二分法(有序数组)


 */
public class BinarySearch {
    public static void main(String[] args) {

        int[] data = new int[]{13, 0, 35, 23, 90,6};

        for (int i = 0; i < data.length-1; i++) {
            int minIndex =i;
            for (int j = i+1; j <data.length ; j++) {
                // 内循环替换是下标
                if (data[j]<data[minIndex]){
                    minIndex=j;
                }
            }

            int t = data[i];
            data[i] = data[minIndex];
            data[minIndex]=t;
        }
        for (int datum : data) {
            System.out.printf("%d ",datum );
        }

        // 二分搜索
        // 搜索35,输出他的下标
        int target =35;
        int len= data.length;
        int left =0;
        int right =len;
        boolean flag = false;
        while (left<=right) {
            // 左小右大,中间为佳,中小左加,中大右减
            // 更新中点值
            int mid = (left + right) / 2;
            if (data[mid] == target) {
                System.out.println("找到" + target + ",索引为" + mid);
                flag=true;
                break;
            } else if (data[mid] < target) {
                left = mid + 1;
            } else if (data[mid] > target) {
                right = mid - 1;
            }

        }
        if (!flag){
            System.out.println("未找到" + target);
        }

    }
}
